home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 05 Programming / SYSVARS.TXT < prev    next >
Text File  |  2019-04-13  |  22KB  |  817 lines

  1. ;========================================================================================
  2. ;    VIC-20 System Variable Equates
  3. ;    (c) 1996 Richard A. Cini, Jr. All Rights Reserved.
  4. ;
  5. ;    Portions of this have been derived from a file in comp.sys.cbm dated 9/1/94.
  6. ;    File was restructured to be used as part of an <#INCLUDE> assembler directive.
  7. ;    Undefined symbols from the comp.sys.cbm doc were created; others cleaned-up.
  8. ;    Variable locations were cross-referenced against other sources and a
  9. ;    disassembly of the KERNEL ROM for correctness.
  10. ;
  11. ;    Zero-page and Page 1 variable names partially derived from various PET books,
  12. ;    specifically for those locations that have similar functionality in both the
  13. ;    VIC and the PET. Other variable names are self-derived.
  14. ;
  15. ;
  16. ;  Release History:
  17. ;  ================
  18. ;  1996/12/13    0.10    First release to CBMAPPS (sort of public beta)
  19. ;  1996/12/19    0.12    Corrected calling tree notes on transfer vectors. Also began
  20. ;                work on system variables, and reworked KERNEL API.
  21. ;  1996/12/23    0.20    Began work on page 0 and 1 variables.
  22. ;
  23. ;========================================================================================
  24.  
  25. ;========================================================================================
  26. ;  Commodore VIC-20 BASIC/KERNEL System Variable Equates
  27. ;
  28. ;  .ORG $0000        ; Zero page
  29. USRPOK =$00
  30. USRVEC =$01
  31. FLOATV =$03
  32. FIXEDV =$05
  33. SRCHCR =$07
  34. QUOTEF =$08
  35. TABCOL =$09
  36. IOFLG1 =$0A
  37. COUNT  =$0B
  38. DIMFLG =$0C
  39. VALTYP =$0D
  40. INTFLG =$0E
  41. DORES  =$0F
  42. SUBFLG =$10
  43. INPFLG =$11
  44. DOMASK =$12
  45. IOPMPT =$13
  46. INTRVL =$14
  47. TMSTPT =$16
  48. LASTPT =$17
  49. STRSTK =$19
  50. UTLPTR =$22
  51. ADDEND =$26
  52. TXTTAB =$2B
  53. VARTAB =$2D
  54. ARYTAB =$2F
  55. EOAPTR =$31
  56. FRESPC =$33
  57. UTLSTP =$35
  58. MEMSIZ =$37
  59. CURLIN =$39
  60. OLDLIN =$3B
  61. OLDTXT =$3D
  62. DATLIN =$3F
  63. DATPTR =$41
  64. INPPTR =$43
  65. VARNAM =$45
  66. VARPNT =$47
  67. FORPNT =$49
  68. YSAVE  =$4B
  69. ACCSYM =$4D
  70. WORK1  =$4E
  71. JMPER  =$54
  72. WORKNV =$57
  73. FC1EX  =$61
  74. FC1M1  =$62
  75. FC1M2  =$63
  76. FC1M3  =$64
  77. FC1M4  =$65
  78. FC1SN  =$66
  79. SEVALP =$67
  80. FC1OVF =$68
  81. FC2EX  =$69
  82. FC2M1  =$6A
  83. FC2M2  =$6B
  84. FC2M3  =$6C
  85. FC2M4  =$6D
  86. FC2SN  =$6E
  87. ARISGN =$6F
  88. FC1ROU =$70
  89. CSBFLN =$71
  90. CHRGET =$73
  91. CHRGOT =$7A
  92. RNDX   =$8B
  93. CSTAT  =$90
  94. STPRVF =$91
  95. TPTMCS =$92
  96. IOFLG2 =$93
  97. SDEFDF =$94
  98. SDFCHR =$95
  99. EOTFLG =$96
  100. REGSAV =$97
  101. COPNFL =$98
  102. INDEV  =$99
  103. OUTTEV =$9A
  104. TPCPAR =$9B
  105. BYTINF =$9C
  106. CMDMOD =$9D
  107. TP1ERC =$9E
  108. TP2ERC =$9F
  109. CTIMR0 =$A0
  110. CTIMR1 =$A1
  111. CTIMR2 =$A2
  112. SBITCF =$A3
  113. CYCLE  =$A4
  114. CNTDN  =$A5
  115. CSBFPT =$A6
  116. TPLEAD =$A7
  117. TPWRRE =$A8
  118. TPWSRE =$A9
  119. TPSCAN =$AA
  120. TPWLRC =$AB
  121. CSBPTR =$AC
  122. TPEEOP =$AE
  123. TPCON1 =$B0
  124. TPCON2 =$B1
  125. CBSTPT =$B2
  126. TPTIMR =$B4
  127. TAPEOT =$B5
  128. RDCHAR =$B6
  129. FNMLEN =$B7
  130. LOGFIL =$B8
  131. SECADR =$B9
  132. CHANNL =$BA
  133. FNPTR  =$BB
  134. WSWRIC =$BD
  135. CBLKRW =$BE
  136. SWDBUF =$BF
  137. TPMOTR =$C0
  138. IOSTRT =$C1
  139. KENTER =$C3
  140. CURKEY =$C5
  141. KEYCNT =$C6
  142. SCRVFL =$C7
  143. EOLPTR =$C8
  144. ICRROW =$C9
  145. KEYDN  =$CB
  146. CENABF =$CC
  147. CRSTIM =$CD
  148. CRUNDR =$CE
  149. CRBLNK =$CF
  150. INSRC  =$D0
  151. LINPTR =$D1
  152. CSRIDX =$D3
  153. CSRMOD =$D4
  154. LINLEN =$D5
  155. CURROW =$D6
  156. LASTKY =$D7
  157. INSRTO =$D8
  158. SLLTBL =$D9
  159. SLDMY  =$F1
  160. SCROWM =$F2
  161. COLRPT =$F3
  162. KBDPTR =$F5
  163. RXPTR  =$F7
  164. TXPTR  =$F9
  165. OSFRE0 =$FB
  166. OSFRE1 =$FC
  167. OSFRE2 =$FD
  168. OSFRE3 =$FE
  169. BASSTO =$FF
  170.  
  171. ;
  172. ;  .ORG $0100        ;Page 1 Variables
  173. FBUFFR =$0100
  174.  
  175. ;
  176. ;  .ORG $0200        ;Page 2 Variables
  177. BUF    =$0200
  178. FILTBL =$0259
  179. DEVTBL =$0263
  180. SECATB =$026D
  181. KBUFFR =$0277
  182. OSSTAR =$0281
  183. OSTOP  =$0283
  184. STIMOT =$0285
  185. CLCODE =$0286
  186. CSRCLR =$0287
  187. SCNMPG =$0288
  188. KBMAXL =$0289
  189. KEYRPT =$028A
  190. KRPTSP =$028B
  191. KRPTDL =$028C
  192. SHFTFL =$028D
  193. LSSHFT =$028E
  194. FCEVAL =$028F
  195. SHMODE =$0291
  196. SCRLFL =$0292
  197. SRCTRG =$0293
  198. SRCMDR =$0294
  199. SBTIM  =$0295
  200. SRSTAT =$0297
  201. BITSTS =$0298
  202. BAUDRT =$0299
  203. RXPTR1 =$029B
  204. RXINPT =$029C
  205. TXPTR1 =$029D
  206. TXOUTP =$029E
  207. TAPIRQ =$029F
  208. PGINDR =$02A1
  209.  
  210. ;
  211. ;  .ORG $0300        ;Page 3 Variables
  212. NERRPT =$0300
  213. NMAIN  =$0302
  214. NCRNCH =$0304
  215. NLIST  =$0306
  216. NBYEBY =$0308
  217. NEVAL  =$030A
  218. 6502A  =$030C
  219. 6502X  =$030D
  220. 6502Y  =$030E
  221. 6502P  =$030F
  222. UNKNO1 =$0310
  223. UNKNO2 =$0334
  224. CSBUF  =$033C
  225.  
  226. ;
  227. ;  .ORG $9000        ; VIC PAGE
  228. ;
  229. ;  Locations commented-out are not referenced in the V2.0 KERNEL ROM.
  230. ;
  231. ;HCENTR =$9000
  232. ;VCENTR =$9001
  233. VRCURS =$9002
  234. VRROWS =$9003
  235. ;RASTER =$9004
  236. VRSTRT =$9005
  237. ;LPENH  =$9006
  238. ;LPENV  =$9007
  239. ;PDLX   =$9008
  240. ;PDLY   =$9009
  241. ;OSC1    =$900A
  242. ;OSC2    =$900B
  243. ;OSC3    =$900C
  244. ;OSC4    =$900D
  245. ;VOLUME  =$900E
  246. ;COLRRG  =$900F
  247.  
  248. ;
  249. ;  .ORG $9110        I/O Page
  250. ;  VIA #1
  251. D1ORB  =$9110
  252. D1ORA  =$9111
  253. D1DDRB =$9112
  254. D1DDRA =$9113
  255. D1TM1L =$9114
  256. D1TM1H =$9115
  257. D1T1CL =$9116
  258. D1T1CH =$9117
  259. D1TM2L =$9118
  260. D1TM2H =$9119
  261. D1SHFR =$911A
  262. D1ACR  =$911B
  263. D1PCR  =$911C
  264. D1IFR  =$911D
  265. D1IER  =$911E
  266. D1ORAH =$911F        ;Cassette switch sense
  267. ;
  268. ;
  269. ;  VIA #2
  270. D2ORB  =$9120
  271. D2ORA  =$9121
  272. D2DDRB =$9122
  273. D2DDRA =$9123
  274. D2TM1L =$9124
  275. D2TM1H =$9125
  276. D2T1CL =$9126
  277. D2T1CH =$9127
  278. D2TM2L =$9128
  279. D2TM2H =$9129
  280. D2SHFR =$912A
  281. D2ACR  =$912B
  282. D2PCR  =$912C
  283. D2IFR  =$912D
  284. D2IER  =$912E
  285. D2ORAH =$912F
  286.  
  287. CLRAM1 =$9400        ;Alternate Color RAM location
  288. CLRAM  =$9600        ;Color RAM 
  289. A0BASE =$A000        ;Autostart ROM base
  290.  
  291. ;========================================================================================
  292. ;  Commodore Public Kernel API
  293. ;
  294. ACPTR  =$FFA5        ;Receive From Serial Bus
  295. BREAK  =$FED2        ;Break vector handler
  296. CHKIN  =$FFC6        ;Set Input Device
  297. CHKOUT =$FFC9        ;Set Output Device
  298. CHRIN  =$FFCF        ;Input a byte
  299. CHROUT =$FFD2        ;Output One Character
  300. CIOUT  =$FFA8        ;Send Serial Deferred
  301. CLALL  =$FFE7        ;Abort All Files
  302. CLOSE  =$FFC3        ;Close File
  303. CLRCHN =$FFCC        ;Restore Default I/O
  304. GETIN  =$FFE4        ;Get a byte
  305. IOBASE =$FFF3        ;Return I/O Base Address
  306. LISTN  =$FFB1        ;Send LISTEN Command on Serial Bus    
  307. LOAD   =$FFD5        ;Load RAM From Device (flows to ILINKL)
  308. MEMBOT =$FF9C        ;Set / Read Bottom of Memory
  309. MEMTOP =$FF99        ;Set / Read Top of Memory
  310. OPEN   =$FFC0        ;Open File
  311. PLOT   =$FFF0
  312. RDTIM  =$FFDE        ;Read Real-Time Clock
  313. READST =$FFB7        ;Get I/O Status Word
  314. RESTOR =$FF8A        ;Restore Kernel Vectors (at $0314)
  315. SAVE   =$FFD8        ;Save RAM To Device (flows to ILINKS)
  316. SCNKEY =$FF9F        ;Scan keyboard
  317. SCREEN =$FFED
  318. SECND  =$FF93        ;Send LISTEN Secondary Address
  319. SETLFS =$FFBA        ;Set Logical File Parameters
  320. SETMSG =$FF90        ;Control OS Messages
  321. SETNAM =$FFBD        ;Set Filename
  322. SETTIM =$FFDB        ;Set Real-Time Clock
  323. SETTMO =$FFA2        ;Set IEEE Timeout
  324. STOP   =$FFE1        ;Check STOP Key
  325. TALK   =$FFB4        ;Send TALK Command on Serial Bus    
  326. TKSA   =$FF96        ;Send TALK Secondary Address
  327. UDTIM  =$FFEA        ;Increment Real-Time Clock
  328. UNLSN  =$FFAE        ;Send UNLISTEN on Serial Bus
  329. UNTLK  =$FFAB        ;Send UNTALK on Serial Bus
  330. USER   =$FED2        ;User vector
  331. VECTOR =$FF8D        ;Change Vectors For User
  332.  
  333.  
  334. ;========================================================================================
  335. ;  Transfer Vectors
  336. ;
  337. ;  Generally, these are not meant to be called by USER programs, 
  338. ;  except maybe IRQ, which can be called to chain interrupts.
  339. NMI    =$FEA9        ; FFFA =>FEA9=>(0318)=>FEAD
  340. RESET  =$FD22        ; FFFC =>FD22
  341. IRQ    =$FF72        ; FFFE =>FF72=>(0314)=>EABF
  342.         ;         =>(0316)=>FED2=>(C002)
  343.  
  344. ;========================================================================================
  345. ;  System Vectors
  346. ;
  347. ;  These are the indirected system vectors located in page 1 RAM. Calling these
  348. ;  functions requires an indirect JSR. These locations used primarily for
  349. ;  re-vectoring to user-created code that provides equivalent functionality.
  350. IRQVP  =$0314        ;IRQ            EABF
  351. BRKVP  =$0316        ;Break        FED2
  352. NMIVP  =$0318        ;NMI            FEAD
  353. OPENVP =$031A        ;OPEN            F40A
  354. CLOSVP =$031C        ;CLOSE        F34A
  355. CKINVP =$031E        ;Set Input        F2C7
  356. CKOTVP =$0320        ;Set Output        F309
  357. CLCHVP =$0322        ;Restore I/O    F3F3
  358. CHINVP =$0324        ;INPUT        F20E
  359. CHOTVP =$0326        ;OUTPUT        F27A
  360. STOPVP =$0328        ;STOP            F770
  361. GTINVP =$032A        ;GET            F1F5
  362. CLALVP =$032C        ;Abort I/O        F3EF
  363. USERVP =$032E        ;User            FED2
  364. LLODVP =$0330        ;Link to Load    F549
  365. LSAVVP =$0332        ;Link to Save    F685
  366.  
  367.  
  368. ;========================================================================================
  369. ;  Commodore BASIC ROM API
  370. ;
  371. ;
  372. BENTER =$c000        ;Basic Restart Vectors
  373. BPANIC =$c002        ;Basic PANIC entry
  374. BASSIG =$c004        ;'cbmbasic'
  375. STMDSP =$c00c        ;BASIC Command Vectors
  376. FUNDSP =$c052        ;BASIC Function Vectors
  377. OPTAB  =$c080        ;BASIC Operator Vectors
  378. RESLST =$c09e        ;BASIC Command Keyword Table
  379. MSCLST =$c129        ;BASIC Misc. Keyword Table
  380. OPLIST =$c140        ;BASIC Operator Keyword Table
  381. FUNLST =$c14d        ;BASIC Function Keyword Table
  382. ERRTAB =$c19e        ;Error Message Table
  383. ERRPTR =$c328        ;Error Message Pointers
  384. OKK    =$c364        ;Misc. Messages
  385.             ;c364    ;'<cr>ok<cr>'
  386.             ;c369    ;'error'
  387. UNUSE1 =$c389        ;Unused byte
  388. FNDFOR =$c38a        ;Find FOR/GOSUB Entry on Stack
  389. BLTU   =$c3b8        ;Open Space in Memory
  390. GETSTK =$c3fb        ;Check Stack Depth
  391. REASON =$c408        ;Check Memory Overlap
  392. OMERR  =$c435        ;Output "?OUT OF MEMORY Error"
  393. ERROR  =$c437        ;Error Routine
  394. ERRFIN =$c469        ;Break Entry
  395. READY  =$c474        ;BASIC ready entry
  396. MAIN   =$c480        ;Input & Identify BASIC Line
  397. MAIN1  =$c49c        ;Get Line Number & Tokenise Text
  398. INSLIN =$c4a2        ;Insert BASIC Text
  399. LNKPRG =$c533        ;Rechain Lines
  400. INLIN  =$c560        ;Input Line Into Buffer
  401. CRUNCH =$c579        ;Tokenize Input Buffer
  402. FNDLIN =$c613        ;Search for Line Number
  403. SCRTCH =$c642        ;Perform [new]
  404. CLEAR  =$c65e        ;Perform [clr]
  405. STXPT  =$c68e        ;Reset TXTPTR
  406. LIST   =$c69c        ;Perform [list]
  407. QPLOP  =$c717        ;Handle LIST 
  408. FOR    =$c742        ;Perform [for]
  409. NEWSTT =$c7ae        ;BASIC Warm Start
  410. CKEOL  =$c7c4        ;Check End of Program
  411. GONE   =$c7e1        ;Prepare to execute statement
  412. GONE3  =$c7ed        ;Perform BASIC Keyword
  413. RESTOR =$c81d        ;Perform [restore]
  414. STOP   =$c82c        ;Perform [stop], [end], break
  415. CONT   =$c857        ;Perform [cont]
  416. RUN    =$c871        ;Perform [run]
  417. GOSUB  =$c883        ;Perform [gosub]
  418. GOTO   =$c8a0        ;Perform [goto]
  419. RETURN =$c8d2        ;Perform [return]
  420. DATA   =$c8f8        ;Perform [data]
  421. DATAN  =$c906        ;Search for Next Statement / Line
  422. IF     =$c928        ;Perform [if]
  423. REM    =$c93b        ;Perform [rem]
  424. ONGOTO =$c94b        ;Perform [on]
  425. LINGET =$c96b        ;Fetch linnum From BASIC
  426. LET    =$c9a5        ;Perform [let]
  427. PUTINT =$c9c4        ;Assign Integer
  428. PTFLPT =$c9d6        ;Assign Floating Point
  429. PUTSTR =$c9d9        ;Assign String
  430. PUTTIM =$c9e3        ;Assign TI$
  431. GETSPT =$ca2c        ;Add Digit to FAC#1
  432. PRINTN =$ca80        ;Perform [print#]
  433. CMD    =$ca86        ;Perform [cmd]
  434. STRDON =$ca9a        ;Print String From Memory
  435. PRINT  =$caa0        ;Perform [print]
  436. VAROP  =$cab8        ;Output Variable    
  437. CRDO   =$cad7        ;Output CR/LF    
  438. COMPRT =$cae8        ;Handle comma, TAB(, SPC(
  439. STROUT =$cb1e        ;Output String    
  440. OUTSPC =$cb3b        ;Output Format Character    
  441. DOAGIN =$cb4d        ;Handle Bad Data    
  442. GET    =$cb7b        ;Perform [get]    
  443. INPUTN =$cba5        ;Perform [input#]    
  444. INPUT  =$cbbf        ;Perform [input]    
  445. BUFFUL =$cbea        ;Read Input Buffer    
  446. QINLIN =$cbf9        ;Do Input Prompt    
  447. READ   =$cc06        ;Perform [read]    
  448. RDGET  =$cc35        ;General Purpose Read Routine    
  449. EXINT  =$ccfc        ;Input Error Messages
  450.             ;ccfc    '?EXTRA IGNORED<CR>'    
  451.             ;cd0c    '?REDO FROM START<CR>'    
  452. NEXT   =$cd1e        ;Perform [next]
  453. DONEXT =$cd61        ;Check Valid Loop
  454. FRMNUM =$cd8a        ;Confirm Result
  455. FRMEVL =$cd9e        ;Evaluate Expression in Text
  456. EVAL   =$ce83        ;Evaluate Single Term
  457. PIVAL  =$cea8        ;Constant - pi
  458. QDOT   =$cead        ;Continue Expression
  459. PARCHK =$cef1        ;Expression in Brackets
  460. CHKCLS =$cef7        ;Confirm Character
  461. CHKPNC =$cef7        ;test ')'
  462. CHKPNO =$cefa        ;test '('
  463. CHKCOM =$cefd        ;test comma
  464. SNERR  =$cf08        ;Output "?SYNTAX Error"
  465. DOMIN  =$cf0d        ;Set up NOT Function
  466. RSVVAR =$cf14        ;Identify Reserved Variable
  467. ISVAR  =$cf28        ;Search for Variable    
  468. TISASC =$cf48        ;Convert TI to ASCII String    
  469. ISFUN  =$cfa7        ;Identify Function Type    
  470. STRFUN =$cfb1        ;Evaluate String Function    
  471. NUMFUN =$cfd1        ;Evaluate Numeric Function    
  472. OROP   =$cfe6        ;Perform [or], [and]"    
  473. DOREL  =$d016        ;Perform <, =, >    
  474. NUMREL =$d01b        ;Numeric Comparison    
  475. STRREL =$d02e        ;String Comparison    
  476. DIM    =$d07e        ;Perform [dim]    
  477. PTRGET =$d08b        ;Identify Variable    
  478. ORDVAR =$d0e7        ;Locate Ordinary Variable    
  479. NOTFNS =$d11d        ;Create New Variable    
  480. NOTEVL =$d128        ;Create Variable    
  481. ARYGET =$d194        ;Allocate Array Pointer Space    
  482. N32768 =$d1a5        ;Constant 32768 in Flpt    DATA
  483. FACINX =$d1aa        ;FAC#1 to Integer in (AC/YR)
  484. INTIDX =$d1b2        ;Evaluate Text for Integer
  485. AYINT  =$d1bf        ;FAC#1 to Positive Integer
  486. ISARY  =$d1d1        ;Get Array Parameters
  487. FNDARY =$d218        ;Find Array
  488. BSERR  =$d245        ;"?Bad subscript error"
  489. FCERR  =$d248        ;"?Illegal quantity error"
  490. NOTFDD =$d261        ;Create Array
  491. INLPN2 =$d30e        ;Locate Element in Array
  492. UMULT  =$d34c        ;Number of Bytes in Subscript
  493. FRE    =$d37d        ;Perform [fre]
  494. GIVAYF =$d391        ;Convert Integer in (AC/YR) to Flpt
  495. POS    =$d39e        ;Perform [pos]
  496. ERRDIR =$d3a6        ;Confirm Program Mode
  497. GETFNM =$d3e1        ;Check Syntax of FN
  498. FNDOER =$d3f4        ;Perform [fn]
  499. STRD   =$d465        ;Perform [str$]
  500. STRLIT =$d487        ;Setup String
  501. PUTNW1 =$d4d5        ;Save String Descriptor
  502. GETSPA =$d4f4        ;Allocate Space for String
  503. GARBAG =$d526        ;Garbage Collection
  504. DVARS  =$d5bd        ;Search for Next String
  505. GRBPAS =$d606        ;Collect a String
  506. CAT    =$d63d        ;Concatenate Two Strings
  507. MOVINS =$d67a        ;Store String in High RAM
  508. FRESTR =$d6a3        ;Perform String Housekeeping
  509. FREFAC =$d6db        ;Clean Descriptor Stack
  510. CHRD   =$d6ec        ;Perform [chr$]
  511. LEFTD  =$d700        ;Perform [left$]
  512. RIGHTD =$d72c        ;Perform [right$]
  513. MIDD   =$d737        ;Perform [mid$]
  514. PREAM  =$d761        ;Pull sTring Parameters
  515. LEN    =$d77c        ;Perform [len]
  516. LEN1   =$d782        ;Exit String Mode
  517. ASC    =$d78b        ;Perform [asc]
  518. GTBYTC =$d79b        ;Evaluate Text to 1 Byte in XR
  519. VAL    =$d7ad        ;Perform [val]
  520. STRVAL =$d7b5        ;Convert ASCII String to Flpt
  521. GETNUM =$d7eb        ;Get parameters for POKE/WAIT
  522. GETADR =$d7f7        ;Convert FAC#1 to Integer in LINNUM
  523. PEEK   =$d80d        ;Perform [peek]
  524. POKE   =$d824        ;Perform [poke]
  525. WAIT   =$d82d        ;Perform [wait]
  526. FADDH  =$d849        ;Add 0.5 to FAC#1
  527. FSUB   =$d850        ;Perform Subtraction
  528. FADD5  =$d862        ;Normalize Addition
  529. FADD   =$d867        ;Perform Addition
  530. NEGFAC =$d947        ;2's Complement FAC#1
  531. OVERR  =$d97e        ;"?OVERFLOW Error"
  532. MULSHF =$d983        ;Multiply by Zero Byte
  533. FONE   =$d9bc        ;Table of Flpt Constants
  534. LOG    =$d9ea        ;Perform [log]
  535. FMULT  =$da28        ;Perform Multiply
  536. MULPLY =$da59        ;Multiply by a Byte
  537. CONUPK =$da8c        ;Load FAC#2 From Memory
  538. MULDIV =$dab7        ;Test Both Accumulators
  539. MLDVEX =$dad4        ;Overflow / Underflow
  540. MUL10  =$dae2        ;Multiply FAC#1 by 10
  541. TENC   =$daf9        ;Constant 10 in Flpt
  542. DIV10  =$dafe        ;Divide FAC#1 by 10
  543. FDIV   =$db07        ;Divide FAC#2 by Flpt at (AC/YR)
  544. FDIVT  =$db0f        ;Divide FAC#2 by FAC#1
  545. MOVFM  =$dba2        ;Load FAC#1 From Memory
  546. MOV2F  =$dbc7        ;Store FAC#1 in Memory
  547. MOVFA  =$dbfc        ;Copy FAC#2 into FAC#1    
  548. MOVAF  =$dc0c        ;Copy FAC#1 into FAC#2    
  549. ROUND  =$dc1b        ;Round FAC#1    
  550. SIGN   =$dc2b        ;Check Sign of FAC#1    
  551. SGN    =$dc39        ;Perform [sgn]    
  552. ABS    =$dc58        ;Perform [abs]    
  553. FCOMP  =$dc5b        ;Compare FAC#1 With Memory    
  554. QINT   =$dc9b        ;Convert FAC#1 to Integer    
  555. INT    =$dccc        ;Perform [int]    
  556. FIN    =$dcf3        ;Convert ASCII String to a Number in FAC#1    
  557. N0999  =$ddb3        ;String Conversion Constants
  558. INPRT  =$ddc2        ;Output 'IN ' + Line Number    
  559. FOUT   =$dddd        ;Convert FAC#1 to ASCII String    
  560. FOUTIM =$de68        ;Convert TI to String    
  561. FHALF  =$df11        ;Table of Constants    
  562. SQR    =$df71        ;Perform [sqr]    
  563. FPWRT  =$df7b        ;Perform power ($)
  564. NEGOP  =$dfb4        ;Negate FAC#1
  565. LOGEB2 =$dfbf        ;Table of Constants
  566. EXP    =$dfed        ;Perform [exp]
  567.  
  568.  
  569. ;========================================================================================
  570. ;  Commodore Internal Kernel API
  571. ;
  572. ;  Code continues across segment boundary from Basic ROM
  573. ;    
  574. POLYX  =$e040        ;Series Evaluation
  575. RMULC  =$e08a        ;Constants for RND
  576. RND    =$e094        ;Perform [rnd]
  577. BIOERR =$e0f6        ;Handle I/O Error in BASIC
  578. BCHOUT =$e109        ;Output Character
  579. BCHIN  =$e10f        ;Input Character
  580. BCKOUT =$e115        ;Setup For Output
  581. BCKIN  =$e11b        ;Setup For Input
  582. BGETIN =$e121        ;Get One Character
  583. SYS    =$e127        ;Perform [sys]
  584. SAVET  =$e153        ;Perform [save]
  585. VERFYT =$e162        ;Perform [verify / load]
  586. OPENT  =$e1bb        ;Perform [open]
  587. CLOSET =$e1c4        ;Perform [close]
  588. SLPARA =$e1d1        ;Get Parameters For LOAD/SAVE
  589. COMBYT =$e1fd        ;Get Next One Byte Parameter
  590. DEFLT  =$e203        ;Check Default Parameters
  591. COMMA  =$e20b        ;Check For Comma
  592. OCPARA =$e216        ;Get Parameters For OPEN/CLOSE
  593. COS    =$e261        ;Perform [cos]
  594. SIN    =$e268        ;Perform [sin]
  595. TAN    =$e2b1        ;Perform [tan]
  596. PI2    =$e2dd        ;Table of Trig Constants
  597.             ;e2dd    pi/2   1.570796327
  598.             ;e2e2    pi*2   6.28318531
  599.             ;e2e7    0.25
  600.             ;e2ec    #05(counter)
  601.             ;e2ed    -14.3813907
  602.             ;e2f2    42.0077971
  603.             ;e2f7    -76.7041703
  604.             ;e2fc    81.6052237
  605.             ;e301    -41.3417021
  606.             ;e306    6.28318531
  607. ATN    =$e30b        ;Perform [atn]
  608. ATNCON =$e33b        ;Table of ATN Constants
  609.             ;e33b    #0B(counter)
  610.             ;e3ec    -0.000684794
  611.             ;e341    0.004850942
  612.             ;e346    -0.161117018
  613.             ;e34b    0.034209638
  614.             ;e350    -0.054279133
  615.             ;e355    0.072457197
  616.             ;e35a    -0.089802395
  617.             ;e35f    0.110932413
  618.             ;e364    -0.142839808
  619.             ;e369    0.19999912
  620.             ;e36e    -0.333333316
  621.             ;e373    1
  622. INIT   =$e378        ;BASIC Cold Start
  623. INITAT =$e387        ;CHRGET For Zero-page
  624. RNDSED =$e39f        ;RND Seed For zero-page (0.811635157)
  625. INITCZ =$e3a4        ;Initialize BASIC RAM
  626. INITMS =$e404        ;Output Power-Up Message
  627. FREMES =$e429        ;Power-up message ' BYTES FREE<CR>'
  628. WORDS  =$e436        ;Power-up message '<CLR>**** CBM BASIC V2 ****<CR>'
  629. BVTRS  =$e44f        ;Table of BASIC Vectors (for 0300)
  630. INITV  =$e45b        ;Initialize Vectors
  631. BASSFT =$e467        ;BASIC Warm Restart [RUN/STOP-RESTORE]
  632. UNKNO3 =$e475        ;UNKNOWN
  633. UNUSD2 =$e47c        ;Unused Bytes For Future Patches
  634. SOUT1  =$e4a0        ;Serial Output 1
  635. SOUT0  =$e4a9        ;Serial Output 0
  636. SDCLK  =$e4b2        ;Get Serial Data And Clock In
  637. SSADR  =$e4bc        ;Get Secondary Address patch for Serial LOAD/VERIFY
  638. SLDPCH =$e4c1        ;Relocated Load patch for Serial LOAD/VERIFY
  639. TPWPCH =$e4cf        ;Tape Write patch for CLOSE
  640. UNUSD3 =$e4da        ;Unused    
  641. SCREEN =$e505        ;Return Screen Organization
  642. PLOT   =$e50a        ;Read / Set Cursor X/Y Position
  643. CINT1  =$e518        ;Initialize I/O
  644. CLRSCN =$e55f        ;Clear Screen
  645. HOME   =$e581        ;Home Cursor
  646. SCNPTR =$e587        ;Set Screen Pointers
  647. PANIC  =$e5b5        ;Set I/O Defaults 
  648. IODEF1 =$e5bb        ;Set I/O Defaults (unused)
  649. LP2    =$e5cf        ;Get Character From Keyboard Buffer
  650. INKEY  =$e5e5        ;Input From Keyboard
  651. INSCRN =$e64f        ;Input From Screen or Keyboard
  652. QUOTET =$e6b8        ;Quotes Test
  653. CMD4   =$e6c5        ;Set Up Screen Print
  654. CSRPLS =$e6ea        ;Advance Cursor
  655. CSRMIN =$e719        ;Retreat Cursor
  656. CSRUP  =$e72d        ;Back on to Previous Line
  657. OUTSCR =$e742        ;Output to Screen
  658. NOSHCH =$e756        ;-unshifted characters-
  659. SHCHRS =$e800        ;-shifted characters-
  660. NEWLIN =$e8c3        ;Go to Next Line
  661. CR     =$e8d8        ;Output <CR>
  662. CKLNMI =$e8e8        ;Check Line Decrement
  663. CKLNPL =$e8fa        ;Check Line Increment
  664. STCLRC =$e912        ;Set Color Code
  665. COLRTB =$e921        ;Color Code Table
  666. XLATB1 =$e929        ;Screen code table
  667. SCRLSC =$e975        ;Scroll Screen
  668. INSSPC =$e9ee        ;Open a Space On The Screen
  669. MOVELN =$ea56        ;Move a Screen Line
  670. COPYCL =$ea6e        ;Syncronize Color Transfer
  671. LINSTR =$ea7e        ;Set Start of Line
  672. CLRLIN =$ea8d        ;Clear Screen Line
  673. PRNSCR =$eaa1        ;Print To Screen
  674. BLINK  =$eab2        ;Blink cursor 
  675. IRQVEC =$eabf        ;Main IRQ Entry Point
  676. SCNKEY =$eb1e        ;Scan Keyboard
  677. PROCKY =$eb74        ;Process Key Image
  678. KDECOD =$ec46        ;Pointers to Keyboard decoding tables    
  679. KDECD1 =$ec5e        ;Keyboard Decoding Table-Unshifted
  680. KDECD2 =$ec9f        ;Keyboard Decoding Table-Shifted
  681. KDECD3 =$ece0        ;Keyboard Decoding Table-Commodore    
  682. GRTXTF =$ed21        ;Graphics/Text Control
  683. KDECD4 =$ed69        ;Keyboard Decoding Table    
  684. KDECD5 =$eda3        ;Keyboard Decoding Table-Control
  685. VICSUP =$ede4        ;Video Chip Set Up Table    
  686. RUNSHF =$edf4        ;Shift-Run Equivalent    
  687. LBSCAD =$edfd        ;Low Byte Screen Line Addresses
  688. ITALK  =$ee14
  689. ILISTN =$ee16
  690. OTDSBU =$ee49        ;Send Data On Serial Bus    
  691. FLGERR =$eeb4        ;Flag Errors    
  692.             ;eeb4  STATUS #80 - DEVICE NOT PRESENT
  693.             ;eeb7     STATUS #03 - WRITE TIMEOUT
  694. ISECND =$eec0
  695. CLRATN =$eec5        ;Clear ATN
  696. ITKSA  =$eece
  697. WTFCLK =$eed3        ;Wait For Serial Clock
  698. ICIOUT =$eee4
  699. IUNTLK =$eef6
  700. IUNLSN =$ef04
  701. IACPTR =$ef19
  702. SCLK1  =$ef84        ;Serial Clock On
  703. SCLK0  =$ef8d        ;Serial Clock Off
  704. DELAY  =$ef96        ;Delay 1 ms
  705. SSEND  =$efa3        ;RS-232 Send
  706. SSNDN  =$efee        ;Send New RS-232 Byte
  707. DSRERR =$f016        ;'No DSR' Error    
  708. CTSERR =$f019        ;'No CTS' Error    
  709. DISTIM =$f021        ;Disable Timer    
  710. BITCNT =$f027        ;Compute Bit Count    
  711. SERRX  =$f036        ;RS-232 Receive    
  712. RXSET  =$f05b        ;Setup To Receive    
  713. PROCSB =$f068        ;Process RS-232 Byte    
  714. SSUBBT =$f0bc        ;Submit to RS-232    
  715. SSENDB =$f0ed        ;Send to RS-232 Buffer    
  716. SERINP =$f116        ;Input From RS-232    
  717. SERGET =$f14f        ;Get From RS-232    
  718. SBIDLE =$f160        ;Serial Bus Idle    
  719. KIOMSG =$f174        ;Table of Kernel I/O Messages
  720.             ;f174    '<CR> I/O ERROR #'    
  721.             ;f1df    'OK<CR>'
  722. DIRMSG =$f1e2        ;Print Message if Direct
  723. MSG    =$f1e6        ;Print Message
  724. IGETIN =$f1f5
  725. ICHRIN =$f20e
  726. GTTSCH =$f250
  727. ICHROT =$f27a
  728. ICHKIN =$f2c7
  729. ICHKOT =$f309
  730. ICLOSE =$f34a        ;Get From Tape / Serial / RS-232
  731. FIND   =$f3cf        ;Find File
  732. FLATRB =$f3df        ;Set File values
  733. ICLALL =$f3ef
  734. ICLRCH =$f3f3
  735. IOPEN  =$f40a
  736. SENDSA =$f495        ;Send Secondary Address
  737. SEROPN =$f4c7        ;Open RS-232
  738. ILOAD  =$f542
  739. LNKLOD =$f549        ;-load-
  740. SERLOA =$f55c        ;Load File From Serial Bus
  741. TAPLOA =$f5ca        ;Load File From Tape
  742. SRCHMS =$f647        ;Print "SEARCHING"
  743. FLNMMS =$f659        ;Print Filename
  744. LOADMS =$f66a        ;Print "LOADING / VERIFYING"
  745. LNKSAV =$f685        ;-save-
  746. SERSAV =$f692        ;Save to Serial Bus
  747. TAPESV =$f6f1        ;Save to Tape
  748. SAVEMS =$f728        ;Print "SAVING"
  749. IUDTIM =$f734
  750. IRDTIM =$f760
  751. ISETTM =$f767
  752. ISTOP  =$f770
  753. IOERMS =$f77e        ;Output I/O Error Messages
  754.             ;f77e    'TOO MANY FILES'
  755.             ;f781    'FILE OPEN'
  756.             ;f784    'FILE NOT OPEN'
  757.             ;f787    'FILE NOT FOUND'
  758.             ;f78a    'DEVICE NOT PRESENT'
  759.             ;f78d    'NOT INPUT FILE'
  760.             ;f790    'NOT OUTPUT FILE'
  761.             ;f793    'MISSING FILENAME'
  762.             ;f796    'ILLEGAL DEVICE NUMBER'
  763. LOCTPH =$f7af        ;Find Any Tape Header
  764. WRTPHD =$f7e7        ;Write Tape Header
  765. GETBFA =$f84d        ;Get Buffer Address
  766. SETBST =$f854        ;Set Buffer Stat / End Pointers
  767. LOCSPH =$f867        ;Find Specific Tape Header
  768. INCTPT =$f88a        ;Bump Tape Pointer
  769. PLAYMS =$f894        ;"Print "PRESS PLAY ON TAPE"
  770. TPSTAT =$f8ab        ;Check Tape Status
  771. RECDMS =$f8b7        ;Print "PRESS RECORD..."
  772. TPREAD =$f8c0        ;Initiate Tape Read
  773. TPWRIT =$f8e3        ;Initiate Tape Write
  774. TPCODE =$f8ef        ;Common Tape Code
  775. TPSTOP =$f94b        ;Check Tape Stop
  776. SETRDT =$f95d        ;Set Read Timing
  777. RDTPBT =$f98e        ;Read Tape Bits
  778. STORTC =$faad        ;Store Tape Characters
  779. RSTTPP =$fbd2        ;Reset Tape Pointer
  780. NCHAR  =$fbdb        ;New Character Setup
  781. TONE   =$fbea        ;Send Tone to Tape
  782. TWRDTA =$fc06        ;Write Data to Tape
  783. WRLEDR =$fc95        ;Write Tape Leader
  784. RESIRQ =$fccf        ;Restore Normal IRQ
  785. STOIRQ =$fcf6        ;Set IRQ Vector
  786. NOMOTR =$fd08        ;Kill Tape Motor
  787. CKWRPT =$fd11        ;Check Read / Write Pointer
  788. INCRDP =$fd1b        ;Bump Read / Write Pointer
  789. SCNROM =$fd3f        ;Check For A000 ROM
  790. ROMSIG =$fd4d        ;Autostart ROM signature 'a0CBM'
  791. IRESTR =$fd52
  792. IVECTR =$fd57
  793. KNRLSV =$fd6d        ;Kernel reset vector table
  794. RAMTAS =$fd8d        ;Initialize System Constants
  795. TAPEVC =$fdf1        ;IRQ vector table for tape I/O
  796. IOINIT =$fdf9        ;Initialize I/O
  797. ENABTM =$fe39        ;Enable Timer
  798. ISETNM =$fe49
  799. ISETLF =$fe50
  800. IRDST  =$fe57
  801. ISETMS =$fe66
  802. ISETTO =$fe6f
  803. IMEMTP =$fe73
  804. IMEMBT =$fe82
  805. MEMTST =$fe91        ;Test system memory
  806. NMIXFR =$fea9        ;NMI Transfer Entry
  807. WARMST =$fed2        ;Warm Start Basic [BRK]
  808. EOI    =$ff56        ;Exit Interrupt
  809. 232TBL =$ff5c        ;RS-232 Timing Table
  810. IRQXFR =$ff72        ;IRQ Transfer Entry
  811.  
  812. VIC-20 System Variable Equates    Page 6
  813. 12/24/96 10:32 AM
  814.  
  815.  
  816.  
  817.